# logging
## LogRecord 属性

LogRecord 具有许多属性，它们大多数来自于传递给构造器的形参。 （请注意 LogRecord 构造器形参与 LogRecord 属性的名称并不总是完全彼此对应的。） 这些属性可被用于将来自记录的数据合并到格式字符串中。 下面的表格（按字母顺序）列出了属性名称、它们的含义以及相应的 %-style 格式字符串内占位符。

如果是使用 {}-格式化（str.format()），你可以将 {attrname} 用作格式字符串内的占位符。 如果是使用 $-格式化（string.Template），则会使用 ${attrname} 的形式。 当然在这两种情况下，都应当将 attrname 替换为你想要使用的实际属性名称。

在 {}-格式化的情况下，你可以在属性名称之后放置指定的格式化旗标，并用冒号来分隔两者。 例如，占位符 {msecs:03d} 会将毫秒值 4 格式化为 004。 请参看 str.format() 文档了解你所能使用的选项的完整细节。



| 属性名称 | 格式 | 描述 |
| -----   | ---- | ---- |
| args | 此属性不需要用户进行格式化。 | 合并到 msg 以产生 message 的包含参数的元组，或是其中的值将被用于合并的字典（当只有一个参数且其类型为字典时）。 | 
| asctime | %(asctime)s | 表示 LogRecord 何时被创建的供人查看时间值。 默认形式为 '2003-07-08 16:49:45,896' （逗号之后的数字为时间的毫秒部分）。 | 
| created | %(created)f | LogRecord 被创建的时间（即 time.time() 的返回值）。 | 
| exc_info | 此属性不需要用户进行格式化。 | 异常元组（例如 sys.exc_info）或者如未发生异常则为 None。 | 
| 文件名 | %(filename)s | pathname 的文件名部分。 | 
| funcName | %(funcName)s | 函数名包括调用日志记录. | 
| levelname | %(levelname)s | 消息文本记录级别（'DEBUG'，'INFO'，'WARNING'，'ERROR'，'CRITICAL'）。 | 
| levelno | %(levelno)s | 消息数字的记录级别 (DEBUG, INFO, WARNING, ERROR, CRITICAL). | 
| lineno | %(lineno)d | 发出日志记录调用所在的源行号（如果可用）。 | 
| message | %(message)s | 记入日志的消息，即 msg % args 的结果。 这是在发起调用 Formatter.format() 时设置的。 | 
| module -- 模块 | %(module)s | 模块 (filename 的名称部分)。 | 
| msecs | %(msecs)d | LogRecord 被创建的时间的毫秒部分。 | 
| msg | 此属性不需要用户进行格式化。 | 在原始日志记录调用中传入的格式字符串。 与 args 合并以产生 message，或是一个任意对象 (参见 使用任意对象作为消息)。 | 
| 名称 | %(name)s | 用于记录调用的日志记录器名称。 | 
| pathname | %(pathname)s | 发出日志记录调用的源文件的完整路径名（如果可用）。 | 
| process | %(process)d | 进程ID（如果可用） | 
| processName | %(processName)s | 进程名（如果可用） | 
| relativeCreated | %(relativeCreated)d | 以毫秒数表示的 LogRecord 被创建的时间，即相对于 logging 模块被加载时间的差值。 | 
| stack_info | 此属性不需要用户进行格式化。 | 当前线程中从堆栈底部起向上直到包括日志记录调用并引发创建当前记录堆栈帧创建的堆栈帧信息（如果可用）。 | 
| thread | %(thread)d | 线程ID（如果可用） | 
| threadName | %(threadName)s | 线程名（如果可用） | 
|  | 